package com.hsurosy.hsuchain.nft.user.facade;

import com.hsurosy.hsuchain.nft.api.user.request.*;
import com.hsurosy.hsuchain.nft.api.user.response.UserOperatorResponse;
import com.hsurosy.hsuchain.nft.api.user.response.UserQueryResponse;
import com.hsurosy.hsuchain.nft.api.user.response.data.UserInfo;
import com.hsurosy.hsuchain.nft.api.user.service.UserFacadeService;
import com.hsurosy.hsuchain.nft.base.response.PageResponse;
import com.hsurosy.hsuchain.nft.rpc.facade.Facade;
import com.hsurosy.hsuchain.nft.user.domain.service.UserService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * 用户服务接口实现
 *
 * @Author Hsu琛君珩
 * @Date 2024-10-05 19:10
 * @Description
 * @Version: v1.0.0
 */
@DubboService(version = "1.0.0")
public class UserFacadeServiceImpl implements UserFacadeService {

    @Autowired
    private UserService userService;

    /**
     * 查询用户信息
     *
     * @param userQueryRequest 用户查询请求参数
     * @return 返回用户查询响应
     */
    @Facade
    @Override
    public UserQueryResponse<UserInfo> query(UserQueryRequest userQueryRequest) {
        // 未实现的查询逻辑，需在后续补充实现
        return null;
    }

    /**
     * 分页查询用户信息
     *
     * @param userPageQueryRequest 分页查询请求参数
     * @return 返回分页查询响应
     */
    @Facade
    @Override
    public PageResponse<UserInfo> pageQuery(UserPageQueryRequest userPageQueryRequest) {
        // 未实现的分页查询逻辑，需在后续补充实现
        return null;
    }

    /**
     * 注册用户
     *
     * @param userRegisterRequest 用户注册请求参数
     * @return 返回用户操作响应
     */
    @Override
    @Facade
    public UserOperatorResponse register(UserRegisterRequest userRegisterRequest) {
        // 调用 userService 注册新用户
        return userService.register(userRegisterRequest.getTelephone(), userRegisterRequest.getInviteCode());
    }

    /**
     * 修改用户信息
     *
     * @param userModifyRequest 用户修改请求参数
     * @return 返回用户操作响应
     */
    @Override
    @Facade
    public UserOperatorResponse modify(UserModifyRequest userModifyRequest) {
        // 未实现的用户信息修改逻辑，需在后续补充实现
        return null;
    }

    /**
     * 用户实名认证
     *
     * @param userAuthRequest 用户认证请求参数
     * @return 返回用户操作响应
     */
    @Override
    @Facade
    public UserOperatorResponse auth(UserAuthRequest userAuthRequest) {
        // 调用 userService 执行用户实名认证逻辑
        return userService.auth(userAuthRequest);
    }

    /**
     * 用户激活
     *
     * @param userActiveRequest 用户激活请求参数
     * @return 返回用户操作响应
     */
    @Override
    @Facade
    public UserOperatorResponse active(UserActiveRequest userActiveRequest) {
        // 调用 userService 执行用户激活逻辑
        return userService.active(userActiveRequest);
    }
}
